package bankteam.dao;

import java.sql.*;
import java.util.*;

import bankteam.excepcion.DAOExcepcion;
import bankteam.interfaces.verificarPoderInterface;
import bankteam.modelo.verificaPoder;
import bankteam.util.ConexionBD;

public class verificarPoderDAO extends BaseDAO implements verificarPoderInterface{

	public Collection<verificaPoder> consultaPoder(String rucCliente,
			String numDocRepre, String abr_poder) throws Exception {
		
			String query = 
				"Select Abr_Poder, Des_Poder,Replace(Date_Format(det.Fec_Vencimiento,Get_Format(Date, 'EUR')),'.','/') As Fec_Vencimiento,ti.des_Tipo_intervencion, "
				+ "Case When Fec_Vencimiento < Curdate() Then 0 else 1 End  AS Activo "+
				"From Cliente Cli "+
				"Inner Join Representante Rep On Rep.Cod_Cliente = Cli.Cod_Cliente "+
				"Inner Join Grupo_Bastanteo Gru On Gru.Cod_Grupo_Bastanteo = Rep.Grupo_Bastanteo_Cod_Grupo_Bastanteo "+
				"Inner Join Detalle_Bastanteo Det On Det.Grupo_Bastanteo_Cod_Grupo_Bastanteo = Gru.Cod_Grupo_Bastanteo "+
				"Inner Join Poder Pod On Pod.Cod_Poder = Det.Poder_Cod_Poder "+
				"Inner Join Bastanteo Bas On Bas.Cod_Bastanteo = Det.Bastanteo_Cod_Bastanteo And Bas.Cliente_Cod_Cliente = Cli.Cod_Cliente "+
				"Left Join Tipo_Intervencion TI On TI.Cod_Tipo_Intervencion =  Det.Cod_Tipo_Intervencion "+
				"Where Cli.RUC =? "+
				  "And Rep.Num_Documento =? "+
				  "And Pod.abr_poder = ? ";		
				
			
			Collection<verificaPoder> lista = new ArrayList<verificaPoder>();
			Connection con = null;
			PreparedStatement stmt = null;
			ResultSet rs = null;
			try {
				con = ConexionBD.obtenerConexion();
				stmt = con.prepareStatement(query);
				stmt.setString(1,rucCliente);
				stmt.setString(2,numDocRepre);
				stmt.setString(3,abr_poder);
				rs = stmt.executeQuery();
				while (rs.next()) {
					verificaPoder vo = new verificaPoder();
					vo.setAbrPoder(rs.getString(1));
					vo.setDesPoder(rs.getString(2));
					vo.setFecha(rs.getString(3));
					vo.setDesTiInversion(rs.getString(4));
					vo.setActivo(rs.getInt(5));
					
					lista.add(vo);
				}
			} catch (SQLException e) {
				System.err.println(e.getMessage());
				throw new DAOExcepcion(e.getMessage());
			} finally {
				this.cerrarResultSet(rs);
				this.cerrarStatement(stmt);
				this.cerrarConexion(con);
			}

		return lista;
	}
	
}
	
	



	

